package com.example.demo.jdk.jvm.classloader;

/**
 * 类加载器
 *
 * @author: htc
 * @date: Created in 11:04 2018/9/26.
 */
public class ClassLoaderDemo {
    public static void main(String[] args) {
//        System.out.println(SubClass.value);
//        System.out.println(SupperClass.value);
        SupperClass supperClass = new SupperClass();
//        SubClass subClass= new SubClass();
    }

    /**
     * 显式的加载类
     */
    public static void loaderOn() {

    }

    /**
     * 隐式的加载类
     */
    public static void loaderOff() {

    }
}

/**
 * 对于静态字段，只有直接定义这个字段的类才会被初始化。
 * 因此通过其子类来引用父类中定义的静态字段，只会触发父类的初始化而不会触发子类的初始化
 */
class SupperClass {
    static {
        System.out.println("supper class init !");
    }
    public static int value = 123;
}

class SubClass extends SupperClass{
    static {
        System.out.println("sub class init !");
    }
    public static int value = 123;
}

